import sys
from recommendation_engine import RecommendationEngine
from data_preparation import DataPreparationLayer


def main(user_id=101, top_n=5):
    """主函数：仅使用混合推荐方法，复用现有RecommendationEngine"""
    print("="*60)
    print("           混合推荐系统 - 主程序入口           ")
    print("="*60)
    

    
    try:
        # 1. 解析命令行参数（支持指定用户ID和推荐数量）

        print(f"▶ 推荐参数：用户ID={user_id}，推荐数量={top_n}")

        # 2. 初始化数据层
        print("\n1. 加载数据层...")
        data_layer = DataPreparationLayer()
        print("✓ 数据层加载完成")

        # 3. 初始化推荐引擎（复用现有recommendation_engine.py）
        print("\n2. 初始化推荐引擎...")
        engine = RecommendationEngine(data_layer)
        print("✓ 推荐引擎初始化完成")

        # 4. 仅调用混合推荐方法（核心逻辑）
        print("\n3. 执行混合推荐...")
        recommendations = engine.recommend_hybrid(
            user_id=user_id,
            top_n=top_n,
            content_weight=0.5,    # 基于内容：50%
            user_info_weight=0.2,  # 基于用户信息：20%
            collab_weight=0.3      # 协同过滤：30%
        )

        # 5. 输出推荐结果
        print("\n" + "="*40)
        print(f"📊 为用户{user_id}的混合推荐结果（Top {top_n}）：")
        for idx, tid in enumerate(recommendations, 1):
            print(f"  {idx}. 模板ID: {tid}")
        print("="*40 + "\n")

        print("✅ 混合推荐执行完成")

    except Exception as e:
        print(f"\n❌ 执行失败：{str(e)}")
        sys.exit(1)


if __name__ == "__main__":
    main( user_id=101, top_n=5)
